''''
装饰器
 用户执行操作的前提都是要登录
 我们不可能在每个方法上加if (islogin)   重复性代码多

 装饰器可以在不改变原来代码的基础上，给函数添加新功能
        可以在原有操作前面或者后面随意添加新的功能
'''

# flag = False
# def login():
#     global flag
#     flag = True
#
# def add():
#     if flag:
#         #执行新增操作
#         pass
#     else:
#         print("没有登录，请前往登录")
#
# def update():
#     pass
#
# def remove():
#     pass
#
# def search():
#     pass

def wrapper(fn):  # 把被装饰的函数传递进来
    def inner():
        print("这里是被装饰函数执行之前")
        fn()
        print("被装饰函数执行之后")
    return inner


def login():
    global flag
    flag = True

def add():
        print("执行新增操作")


# a = wrapper(add)  # a 就是inner
# a()
add = wrapper(add)  # 此时执行的就是inner   原理就是inner覆盖原来的add
add()


# 更简单的方法是 直接在方法前面注解

@wrapper  #add = wrapper(add)
def update():
    print("执行更新操作")

update()